Hi, I'm starting to program a class, and I am having trouble when defining the setup() function for the class with an optional argument. The code in my .mata is
where the dots indicate other functions, none of which have | anywhere in them. When I "do" this file I get
As soon as I take the vertical line out it runs file of course, but the point is that I want the matrix user_S to be optional. If it's there we would be modeling scale heterogeneity if not we wouldn't.
Code:
version 15 mata: class nelogit { // Definition of variables that are common to all estimators, thus // making them protected so they can inherit them. protected: real matrix X, S // explanatory variables and scale variables real colvector b, bS, g // coefficients, scaled coefficients, and gradient real matrix V, H // Variance and Hessian real colvector y // vector of the dependent variable real scalar j // number of alternatives real scalar ll0, ll // log-likelihoods of constants-only and estimated models real scalar r2 // McFadden's pseudo-rsquared public void setup() // Functions implemented in this class private: real scalar ll0() // Returns the ll of constants-only model real scalar r2() // Returns McFadden's pseudo R-squared } // Setup functions for the class void nelogit::setup(real colvector user_y, real matrix user_X, real scalar user_j |, real matrix user_S) { this.y = user_y this.X = user_X this.j = user_j if (args()>3) this.S = user_S this.ll0 = this.ll0() } ...... end
Code:
. quiet do "`pdir'/nelogit.mata" '|' found where ')' expected (41 lines skipped) r(3000); end of do-file r(3000);
Comment